package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Teacher;
import com.itheima.edu.info.manager.service.TeacherService;

import java.util.Scanner;

public class TeacherController {
    TeacherService teacherService = new TeacherService();
    Scanner sc = new Scanner(System.in);
    public  void start(){
        teacherLoop:
        teacher:while (true){
            System.out.println("--------欢迎来到<老师>管理系统--------");
            System.out.println("请输入您的选择 : 1.添加老师 2.删除老师 3.修改老师 4.查询老师 5.退出");
            String choice = sc.next();

            switch (choice) {
                case "1" :
                    //System.out.println("添加老师");
                    addTeacher();
                    break;
                case "2" :
                    //System.out.println("删除老师");
                    deleteTeacherById();
                    break;
                case "3" :
                    //System.out.println("修改老师");
                    updateTeacher();
                    break;
                case "4" :
                    //System.out.println("查询老师");
                    findAllTeacher();
                    break;
                case "5" :
                    System.out.println("感谢使用老师管理系统,再见");
                    break teacherLoop;
                default:
                    System.out.println("您的输入有误,请重新输入");
                    break;
            }

        }
    }

    //查看老师方法
    public void findAllTeacher() {
        //调用业务员中的获取方法,得到老师的对象数组
        Teacher[] teas = teacherService.findAllTeacher();
        //判断数组的内存地址,是否为null
        if (teas == null){
            System.out.println("查无信息,请添加后重试");
            return;
        }
        //遍历数组,获取老师信息并打印在控制台
        System.out.println("学号\t\t姓名\t年龄\t\t生日");
        for (int i = 0; i < teas.length; i++) {
            Teacher tea = teas[i];
            if (tea != null){
                System.out.println(tea.getId() + "\t" + tea.getName() + "\t" + tea.getAge() + "\t\t" + tea.getBrithday());
            }
        }
    }

    //修改老师方法
    public void updateTeacher() {
        //接受要修改的老师工号
        System.out.println("请输入要修改的老师id:");
        String updateId;
        while (true){
            updateId = sc.next();

            //调用业务员的判断id是否存在方法,对用户录入的id进行校验
            boolean exists = teacherService.isExists(updateId);

            if (exists){
                //存在就结束循环,
                break;
            }else {
                //不存在,就让用户重新录入
                System.out.println("当前id不存在,请重新输入");
                return;
            }
        }
        //接受新的老师信息--封装成新的学生对象
        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入年龄:");
        String age = sc.next();
        System.out.println("请输入生日:");
        String birthday = sc.next();

        //封装成新的老师对象
        Teacher newTea = new Teacher();
        newTea.setId(updateId);
        newTea.setName(name);
        newTea.setAge(age);
        newTea.setBrithday(birthday);

        //指挥业务员完成修改业务,将要修改的工号和封装好的老师对象作为参数
        teacherService.updateTeacher(updateId,newTea);
        //给出修改提示
        System.out.println("修改成功!");
    }

    //删除老师方法
    public void deleteTeacherById() {
        //接受用户录入的要删除的老师工号
        System.out.println("请输入要删除的老师id:");
        String delId;
        while (true){
            delId = sc.next();
            //调用业务员的判断id是否存在方法,对用户录入的id进行校验
            boolean exists = teacherService.isExists(delId);

            if (exists){
                //存在就结束循环
                break;
            }else {
                System.out.println("当前id不存在,请重新输入");
            }
        }
        //除了循环,接收到一个存在的id
        teacherService.deleteTeacherById(delId);
        //删除提示
        System.out.println("删除成功");
    }


    //添加老师方法
    public  void addTeacher() {
        //接受用户输入的信息
        Scanner sc = new Scanner(System.in);
        String id;
        while (true){
            System.out.println("请输入老师工号:");
            id = sc.next();
            //加入工号是否存在的判断
            //挥业务员去帮我们检验一下当前用户录入的工号是否存在
            boolean exists = teacherService.isExists(id);
            //根据业务员返回的结果进行判断
            if (exists){
                //true,说明工号存在,不能用,需要重新输入
                System.out.println("当前工号已存在,请重新输入:");
            }else{
                //false,说明工号不存在,可以用,就让用户往下输入姓名等其他信息
                break;
            }
        }
        System.out.println("请输入老师姓名:");
        String name = sc.next();
        System.out.println("请输入老师年龄:");
        String age = sc.next();
        System.out.println("请输入老师生日:");
        String brithday = sc.next();

        //将录入的信息封装成Teacher老师对象
        Teacher tea = new Teacher();
        tea.setId(id);
        tea.setName(name);
        tea.setAge(age);
        tea.setBrithday(brithday);

        //将封装好的老师对象交给业务员Service,让service去做添加业务
        TeacherService service = new TeacherService();
        boolean res = service.addTeacher(tea);

        //根据业务员返回的结果给用户相应的提示
        if (res){
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }

    }
}
